草庐IT

c++ - Swig -includeall 除了...

全部标签

c++ - _r 后缀是什么意思?

我知道_r后缀用于表示线程安全的东西。例如strtok和strtok_r或libmysql.so和libmysql_r.so。但我在任何地方都找不到这到底意味着什么?例如,_t表示“类型”,_r后缀是什么意思? 最佳答案 请参阅http://pubs.opengroup.org/onlinepubs/000095399/xrat/xbd_chap04.html中的A.4.16线程安全章:Thesuffix"_r"ishistorical,wherethe'r'stoodfor"reentrant".

c++ - 将 A[i][j] 更改为 A[j][i] 时,遍历矩阵的速度变慢

这个问题在这里已经有了答案:c++2darrayaccessspeedchangesbasedon[a][b]order?[duplicate](5个答案)关闭9年前。我有一个名为A的int矩阵,当我按列而不是行迭代它时,它的运行速度慢了大约50毫秒:for(inti=0;i有谁知道为什么会这样?我问过几个人,但他们都不知道为什么。我确信这与地址在计算机内存中的表示方式有关,但我仍然想找到更具体的答案。

c++ - 将一个结构转换为另一个

我正在尝试将一个struct转换为另一个。但是我在编译时不断收到这个错误:conversiontonon-scalartyperequested我得到这一行的错误:p是一个结构前缀,我需要将它转换为结构prefix_ipv4get_info(type,(structprefix_ipv4)p);代码:ospf_external_info_delete(u_chartype,structprefix_ipv4p){///////////////}structprefix_ipv4{u_charfamily;u_charprefixlen;structin_addrprefix__attr

c++ - 为什么sizeof()编译器返回的值是依赖的?

structA{charc;doubled;}a;mingw32-gcc.exe中的:sizeofa=16在gcc4.6.3(ubuntu)中:sizeofa=12为什么它们不同?我认为应该是16,gcc4.6.3是否做了一些优化? 最佳答案 如果需要,编译器可能会为目标体系结构执行数据结构对齐。这样做可能纯粹是为了提高应用程序的运行时性能,或者在某些情况下是处理器需要的(即,如果数据未对齐,则程序将无法运行)。例如,大多数(但不是全部)SSE2指令要求数据在16字节边界上对齐。简而言之,计算机内存中的所有内容都有一个地址。假设我们

c++ - 常量的哪个属性使其不可更改?

今天我遇到了一个面试,其中一个问题对我来说非常棘手。面试官说“如何让常量能够改变它的值?”我回答“使用指针”并给他看了一个例子:intmain(void){constinta=3;int*ptr;ptr=(int*)(&a);printf("A=%d\n",a);*ptr=5;printf("A=%d\n",a);return0;}但他说这很好。但是告诉我哪个是使常数不变的属性?他还说,有一个属性我们可以改变并使常量可变。有这样的属性(property)吗?它是如何工作的? 最佳答案 如果他说这很好,那他就错了:试图修改常量对象会导

c++ - 将 float 转换为 int,有和没有转换

这两个是等价的吗?floatf=3.14;inti;i=f;//3和floatf=3.14;inti;i=(int)f;//3 最佳答案 编译器处理这两种情况的方式没有区别。生成的机器代码将是相同的。但是,第一种是隐式转换,第二种是显式转换。根据编译器标志,您可能会在执行丢失精度的隐式转换时收到警告。旁注,文字3.14的类型为double,这意味着语句floatf=3.14中也可能存在精度损失>。一种干净的方法是编写floatf=3.14f指定这是float类型的值3.14。 关于c++

c++ - 递归函数的内存分配

调用递归函数时内存是如何分配的?一个函数有它自己分配的内存。当它被调用时,参数(不是引用传递的参数)和变量获得内存。那么,当从函数体内再次调用该函数时,如何将内存分配给第二次调用的变量和参数? 最佳答案 递归函数与任何其他函数没有什么不同——自动局部变量通过将堆栈指针推进到足够远以说明它们的大小总和(加上对齐所需的任何填充)而作为单个block分配。每个递归调用都会以这种方式压入一个新的堆栈帧,然后在返回时将其弹出。如果递归未能达到基本情况,堆栈将迅速耗尽,导致同名的StackOverflow崩溃。

java - codechef 和 spoj 问题中使用模 10^9+7 的意义是什么?

我正在研究aproblem这需要输出为“对于每一行输出答案模10^9+7”。为什么问题中包含模10^9+7?它有什么意义?我不是在寻找问题的解决方案;只有那个特定常数的重要性。 最佳答案 问题要求结果取模素数,因为备选方案,即要求给出“高阶位”的浮点结果和要求整个结果,并不总是问题设置者正在寻找的。这些问题通常是“发现并实现重复”的问题。低位通常会告诉你你发现的递归是否正确。对于“高阶位”问题可能有一个特殊的技巧,也许是基于一个聪明的解析近似。人们不经常询问整个结果的原因是这需要参赛者进行大数运算。问题制定者通常不希望因为“错误的原

c++ - 堆栈内存如何工作或函数变量如何在堆栈上分配和访问

当我在这个page上读到Stack和Heap的例子时,我有一个问题,如果像页面上给出的示例一样,一个函数将其所有局部变量放在堆栈上,堆栈实际上是否访问不同的变量?因为堆栈通常只能访问顶部,所以它只能访问函数的一个变量。这是否意味着函数的变量存储在堆栈上的结构中? 最佳答案 堆栈指针,顾名思义,是一个和其他指针一样的指针,它指向普通的标准内存。要访问堆栈的任何区域,您只需向指针添加一个偏移量。如果你从C指针的角度来考虑它,你就有堆栈指针char*stack_pointer=some_memory;这个指针然后可以用作普通指针,包括添加

c++ - 对任意值类型的操作

这article描述了一种在C#中允许添加任意值类型的方法,这些值类型具有为其定义的+运算符。本质上它允许以下代码:publicTAdd(Tval1,Tval2){returnval1+val2;}此代码无法编译,因为不能保证T类型具有“+”运算符的定义,但效果是通过如下代码实现的:publicTAdd(Tval1,Tval2){//Numdefinesa'+'operationwhichreturnsavalueoftypeTreturn(newNum(val1)+newNum(val2));}点击链接查看Num类如何实现这一点。无论如何,关于这个问题。有什么方法可以在C或C++中实